#ifndef INCLUDED_INPUTTYPES_H
#define INCLUDED_INPUTTYPES_H

//====================================================================================================
// Filename:	InputTypes.h
// Created by:	Peter Chan
// Description:	Header containing a bunch on constants for inputs.
//====================================================================================================

//====================================================================================================
// Constants
//====================================================================================================

namespace Keys
{
	// Keyboard roll 1
	const int ESCAPE		= 0x01;
	const int F1			= 0x3B;
	const int F2			= 0x3C;
	const int F3			= 0x3D;
	const int F4			= 0x3E;
	const int F5			= 0x3F;
	const int F6			= 0x40;
	const int F7			= 0x41;
	const int F8			= 0x42;
	const int F9			= 0x43;
	const int F10		   = 0x44;
	const int F11		   = 0x57;
	const int F12		   = 0x58;

	// Keyboard roll 2
	const int GRAVE		 = 0x29;
	const int ONE		   = 0x02;
	const int TWO		   = 0x03;
	const int THREE		 = 0x04;
	const int FOUR		  = 0x05;
	const int FIVE		  = 0x06;
	const int SIX		   = 0x07;
	const int SEVEN		 = 0x08;
	const int EIGHT		 = 0x09;
	const int NINE		  = 0x0A;
	const int ZERO		  = 0x0B;
	const int MINUS		 = 0x0C;
	const int EQUALS		= 0x0D;
	const int BACKSPACE	 = 0x0E;

	// Keyboard roll 3
	const int TAB		   = 0x0F;
	const int Q			 = 0x10;
	const int W			 = 0x11;
	const int E			 = 0x12;
	const int R			 = 0x13;
	const int T			 = 0x14;
	const int Y			 = 0x15;
	const int U			 = 0x16;
	const int I			 = 0x17;
	const int O			 = 0x18;
	const int P			 = 0x19;
	const int LBRACKET	  = 0x1A;
	const int RBRACKET	  = 0x1B;
	const int BACKSLASH	 = 0x2B;

	// Keyboard roll 4
	const int A			 = 0x1E;
	const int S			 = 0x1F;
	const int D			 = 0x20;
	const int F			 = 0x21;
	const int G			 = 0x22;
	const int H			 = 0x23;
	const int J			 = 0x24;
	const int K			 = 0x25;
	const int L			 = 0x26;
	const int SEMICOLON	 = 0x27;
	const int APOSTROPHE	= 0x28;
	const int ENTER		 = 0x1C;

	// Keyboard roll 5
	const int Z			 = 0x2C;
	const int X			 = 0x2D;
	const int C			 = 0x2E;
	const int V			 = 0x2F;
	const int B			 = 0x30;
	const int N			 = 0x31;
	const int M			 = 0x32;
	const int COMMA		 = 0x33;
	const int PERIOD		= 0x34;
	const int SLASH		 = 0x35;

	// Lock keys
	const int CAPSLOCK	  = 0x3A;
	const int NUMLOCK	   = 0x45;
	const int SCROLLLOCK	= 0x46;

	// Numpad
	const int NUMPAD1	   = 0x4F;
	const int NUMPAD2	   = 0x50;
	const int NUMPAD3	   = 0x51;
	const int NUMPAD4	   = 0x4B;
	const int NUMPAD5	   = 0x4C;
	const int NUMPAD6	   = 0x4D;
	const int NUMPAD7	   = 0x47;
	const int NUMPAD8	   = 0x48;
	const int NUMPAD9	   = 0x49;
	const int NUMPAD0	   = 0x52;
	const int NUM_ADD	   = 0x4E;
	const int NUM_SUB	   = 0x4A;
	const int NUM_MUL	   = 0x37;
	const int NUM_DIV	   = 0xB5;
	const int NUM_ENTER	 = 0x9C;
	const int NUM_DECIMAL   = 0x53;

	// Navigation keys
	const int INS		   = 0xD2;
	const int DEL		   = 0xD3;
	const int HOME		  = 0xC7;
	const int END		   = 0xCF;
	const int PGUP		  = 0xC9;
	const int PGDN		  = 0xD1;

	// Support keys
	const int LSHIFT		= 0x2A;
	const int RSHIFT		= 0x36;
	const int LCONTROL	  = 0x1D;
	const int RCONTROL	  = 0x9D;
	const int LALT		  = 0x38;
	const int RALT		  = 0xB8;
	const int LWIN		  = 0xDB;
	const int RWIN		  = 0xDC;
	const int SPACE		 = 0x39;

	// Arrow keys
	const int UP			= 0xC8;
	const int DOWN		  = 0xD0;
	const int LEFT		  = 0xCB;
	const int RIGHT		 = 0xCD;
}

//----------------------------------------------------------------------------------------------------

namespace Mouse
{
	const int LBUTTON	   = 0;
	const int RBUTTON	   = 1;
	const int MBUTTON	   = 2;
}

//----------------------------------------------------------------------------------------------------

namespace GamePad
{
	const int BUTTON1	   = 0;
	const int BUTTON2	   = 1;
	const int BUTTON3	   = 2;
	const int BUTTON4	   = 3;
	const int BUTTON5	   = 4;
	const int BUTTON6	   = 5;
	const int BUTTON7	   = 6;
	const int BUTTON8	   = 7;
	const int BUTTON9	   = 8;
	const int BUTTON10	  = 9;
}

#endif // #ifndef INCLUDED_DXINPUT_H
